//
// Created by 32827 on 2023/11/16.
//
#include "yzf_crc.h"
YZF_RESULT yzf_crc_reset(){
    CRC->CR=0b1UL;
    return YZF_OK;
}
YZF_RESULT yzf_crc_write(const uint32_t * data_p,uint32_t len){
    for(int i=0;i<len;i++){
        CRC->DR=data_p[i];
    }
    return YZF_OK;
}
YZF_RESULT yzf_crc_read(uint32_t *crc_p){
    *crc_p=CRC->DR;
    return YZF_OK;
}
YZF_RESULT yzf_crc_check(const uint32_t *data_p,uint32_t len,uint32_t data_crc){
    yzf_crc_reset();
    uint32_t re_crc;
    yzf_crc_write(data_p,len);
    yzf_crc_read(&re_crc);
    if(re_crc!=data_crc){
        return YZF_CRC_ERROR;
    }else{
        return YZF_OK;
    }
}